package cn.bytest.netty.serialize;

import com.google.gson.*;

import java.lang.reflect.Type;
/**
 * 需要实现 JsonSerializer，JsonDeserializer 序列化和反序列化接口
 * 泛型 Class<?> 是说要把 java 那个类型序列化反序列化
 */
public class JsonClassCodec implements JsonSerializer<Class<?>>, JsonDeserializer<Class<?>> {

    // 反序列化
    @Override
    public Class<?> deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {
        String clazz = jsonElement.getAsString();
        try {
            return Class.forName(clazz);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return null;
    }

    // 序列化
    @Override
    public JsonElement serialize(Class<?> aClass, Type type, JsonSerializationContext jsonSerializationContext) {
        // 将 Class 变为 json
        return new JsonPrimitive(aClass.getName());
    }
}
